enum ShogiPieces
{	
	PAWN,
	LANCE,
	ROOK,
	BISHOP,
	SILVER_GENERAL,
	GOLD_GENERAL,
	PROMOTED_PAWN,
	PROMOTED_LANCE,
	PROMOTED_ROOK,
	PROMOTED_BISHOP,
	KING,
	NUMBER_OF_PIECES 
};

static const unsigned char VALID = 0xFF;
static const unsigned char INVALID = 0x00;

// A1 is first square 
enum  SQUARES	{	A1, A2, A3,	A4, A5, A6, A7, A8, A9,
					B1, B2, B3, B4, B5, B6, B7, B8, B9,
					C1, C2, C3, C4, C5, C6, C7, C8, C9,
					D1, D2, D3, D4, D5, D6, D7, D8, D9,
					E1, E2, E3, E4, E5, E6, E7, E8, E9,
					F1, F2, F3, F4, F5, F6, F7, F8, F9,
					G1, G2, G3, G4, G5, G6, G7, G8, G9,
					H1, H2, H3, H4, H5, H6, H7, H8, H9,
					I1, I2, I3, I4,	I5, I6, I7, I8, I9

					};



static const char* SQUARENAMES[] = {	"a1","a2","a3","a4","a5","a6","a7","a8","a9",
										"b1","b2","b3","b4","b5","b6","b7","b8","b9",
										"c1","c2","c3","c4","c5","c6","c7","c8","c9",
										"d1","d2","d3","d4","d5","d6","d7","d8","d9",
										"e1","e2","e3","e4","e5","e6","e7","e8","e9",
										"f1","f2","f3","f4","f5","f6","f7","f8","f9",
										"g1","g2","g3","g4","g5","g6","g7","g8","g9",
										"h1","h2","h3","h4","h5","h6","h7","h8","h9",
										"i1","i2","i3","i4","i5","i6","i7","i8","i9"								
										};

// Basic structure borrowed form Reijer Grimbergen.

typedef struct 
{
	unsigned int bb[3];
} BitBoard;

typedef unsigned char SquareId;
typedef unsigned char Piece;

enum SIDES {
	WHITE,
	BLACK
};

static const unsigned int NUMBER_OF_PLAYERS = 2;
